package com.ht.mt.sric.sesion;

import com.ht.mt.sric.entity.Usuario;
import com.ht.mt.sric.sesion.local.UsuarioSessionEJBBeanLocal;
import com.ht.mt.sric.sesion.remota.UsuarioSessionEJBBeanRemote;

import java.util.List;

import javax.annotation.Resource;

import javax.ejb.SessionContext;
import javax.ejb.Stateless;

import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateless(name = "UsuarioSessionEJBBean", mappedName = "UsuarioSessionEJBBean")
public class UsuarioSessionEJBBean implements UsuarioSessionEJBBeanRemote, UsuarioSessionEJBBeanLocal {
    @Resource
    SessionContext sessionContext;
    @PersistenceContext(unitName = "sric_ejb")
    private EntityManager em;

    public UsuarioSessionEJBBean() {
    }

    public Usuario persistUsuario(Usuario usuario) {
        em.persist(usuario);
        return usuario;
    }

    public Usuario mergeUsuario(Usuario usuario) {
        return em.merge(usuario);
    }

    public void removeUsuario(Usuario usuario) {
        usuario = em.find(Usuario.class, usuario.getIdUsua());
        em.remove(usuario);
    }

    /** <code>select o from Usuario o</code> */
    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public List<Usuario> getUsuarioFindAll() {
        return em.createNamedQuery("Usuario.findAll", Usuario.class).getResultList();
    }

    @Override
    public Usuario getUsuario(String usua, String pswd) {
        try{
            
            Query q = em.createQuery("select u from Usuario u where u.nickUsua =:nick and u.clvUsua =:psw ");
                      q.setParameter("nick", usua);
                      q.setParameter("psw", pswd);
               Usuario  usuario = (Usuario) q.getSingleResult();
            return usuario;
          }catch(Exception e){
            e.printStackTrace();
            return null;
        }
        
    }
}
